package patterns.prototype;

import java.util.Hashtable;

/**
 * Created by lenovo on 2016/11/23 0023.
 * 对象缓存类，用于将原型对象存储到数据库，并推外提供clone备份。
 */
public class ShapeCache {
    //Hasttable 用于缓存对象实例
    private static Hashtable<String,AbsShape> shapeMap = new Hashtable<>();
    //对外提供获取对象实例的方法，通过指定的id
    public static AbsShape getShape(String id){
        return (AbsShape) shapeMap.get(id).clone();
    }
    //提供一个加入和存储实例对象的方法,并将对象保存到hashtable中
    public static void loadCache(){
        //模拟新增对象实例，保存数据库，并添加到hashtable
        Circle circle = new Circle();
        //设置唯一编号
        circle.setId("1");
        //加入hashtable
        shapeMap.put(circle.getId(),circle);
        Square square = new Square();
        //设置唯一编号
        square.setId("2");
        //加入hashtable
        shapeMap.put(square.getId(),square);
        Rectangle rect = new Rectangle();
        //设置唯一编号
        rect.setId("3");
        //加入hashtable
        shapeMap.put(rect.getId(),rect);
    }
}
